Multi-level address translations are required in computer systems that can support software entities of different types such as a hypervisor, operating systems and applications or other processes that are executed on top of the operating systems.
Typically, a storage unit defines a machine (or physical) address space, each operating system has its own pseudo physical (or guest physical) address space and each application has its own virtual address space.
Each of these software entities can be a consumer that can cause a communication circuit or a requesting device to generate a direct memory access request. The direct memory access request includes a virtual memory address that should be translated (by a multi-level address translation process) to a machine address.
There is a need to provide efficient methods, computer program products and system for effectively responding to error events.